package com.zoweunion.mechanic.datasources;//package com.zoweunion.mechanic.datasources;
//
//import java.util.HashMap;
//import java.util.Map;
//import java.util.Properties;
//import javax.sql.DataSource;
//import org.apache.ibatis.session.SqlSessionFactory;
//import org.mybatis.spring.SqlSessionFactoryBean;
//import org.mybatis.spring.annotation.MapperScan;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Primary;
//import org.springframework.core.io.DefaultResourceLoader;
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
//import com.alibaba.druid.pool.DruidDataSourceFactory;
//
///**
// * author:王春伟
// * springboot集成mybatis的基本入口 1）创建数据源(如果采用的是默认的tomcat-jdbc数据源，则不需要)
// * 2）创建SqlSessionFactory 3）配置事务管理器，除非需要使用事务，否则不用配置
// */
//@Configuration // 该注解类似于spring配置文件
//@ConfigurationProperties(prefix = "spring.datasource")
//@MapperScan(basePackages = "com.zoweunion.mechanic.dao")
//public class MyBatisConfig {
//
//	private String postgresqldriverclassname;
//	private String postgresqlurl;
//	private String postgresqlusername;
//	private String postgresqlpassword;
//	private String mysqldriverclassname;
//	private String mysqlurl;
//	private String mysqlusername;
//	private String mysqlpassword;
//	private String mapperlocations;
//	private String configlocation;
//
//
//	public String getMapperlocations() {
//		return mapperlocations;
//	}
//
//	public void setMapperlocations(String mapperlocations) {
//		this.mapperlocations = mapperlocations;
//	}
//
//	public String getConfiglocation() {
//		return configlocation;
//	}
//
//	public void setConfiglocation(String configlocation) {
//		this.configlocation = configlocation;
//	}
//
//	public String getPostgresqldriverclassname() {
//		return postgresqldriverclassname;
//	}
//
//	public void setPostgresqldriverclassname(String postgresqldriverclassname) {
//		this.postgresqldriverclassname = postgresqldriverclassname;
//	}
//
//	public String getPostgresqlurl() {
//		return postgresqlurl;
//	}
//
//	public void setPostgresqlurl(String postgresqlurl) {
//		this.postgresqlurl = postgresqlurl;
//	}
//
//	public String getPostgresqlusername() {
//		return postgresqlusername;
//	}
//
//	public void setPostgresqlusername(String postgresqlusername) {
//		this.postgresqlusername = postgresqlusername;
//	}
//
//	public String getPostgresqlpassword() {
//		return postgresqlpassword;
//	}
//
//	public void setPostgresqlpassword(String postgresqlpassword) {
//		this.postgresqlpassword = postgresqlpassword;
//	}
//
//	public String getMysqldriverclassname() {
//		return mysqldriverclassname;
//	}
//
//	public void setMysqldriverclassname(String mysqldriverclassname) {
//		this.mysqldriverclassname = mysqldriverclassname;
//	}
//
//	public String getMysqlurl() {
//		return mysqlurl;
//	}
//
//	public void setMysqlurl(String mysqlurl) {
//		this.mysqlurl = mysqlurl;
//	}
//
//	public String getMysqlusername() {
//		return mysqlusername;
//	}
//
//	public void setMysqlusername(String mysqlusername) {
//		this.mysqlusername = mysqlusername;
//	}
//
//	public String getMysqlpassword() {
//		return mysqlpassword;
//	}
//
//	public void setMysqlpassword(String mysqlpassword) {
//		this.mysqlpassword = mysqlpassword;
//	}
//
//	/**
//	 * 创建数据源
//	 */
//	@Bean("postgreDataSource")
//	public DataSource postgreDataSource() throws Exception {
//		Properties props = new Properties();
//		props.put("driverClassName", postgresqldriverclassname);
//		props.put("url", postgresqlurl);
//		props.put("username", postgresqlusername);
//		props.put("password", postgresqlpassword);
//		return DruidDataSourceFactory.createDataSource(props);
//	}
//
//	@Bean("mysqlDataSource")
//	public DataSource mysqlDataSource() throws Exception {
//		Properties props = new Properties();
//		props.put("driverClassName",mysqldriverclassname);
//		props.put("url", mysqlurl);
//		props.put("username", mysqlusername);
//		props.put("password", mysqlpassword);
//		return DruidDataSourceFactory.createDataSource(props);
//	}
//
//
//	@Bean
//	@Primary
//	public DynamicDataSource dataSource(@Qualifier("postgreDataSource") DataSource postgreDataSource,
//										@Qualifier("mysqlDataSource") DataSource mysqlDataSource) {
//		Map<Object, Object> targetDataSources = new HashMap<>();
//		targetDataSources.put(DatabaseType.postgresqldb, postgreDataSource);
//		targetDataSources.put(DatabaseType.mysqldb, mysqlDataSource);
//
//		DynamicDataSource dataSource = new DynamicDataSource();
//		//该方法是AbstractRoutingDataSource的方法
//		dataSource.setTargetDataSources(targetDataSources);
//		//默认的datasource设置为postgreDataSource即运用机修狮的数据源
//		dataSource.setDefaultTargetDataSource(postgreDataSource);
//
//		return dataSource;
//	}
//
//	/**
//	 * 根据数据源创建SqlSessionFactory
//	 */
//	@Bean
//	public SqlSessionFactory sqlSessionFactory(DynamicDataSource ds) throws Exception {
//		SqlSessionFactoryBean fb = new SqlSessionFactoryBean();
//		fb.setDataSource(ds);// 指定数据源(这个必须有，否则报错)
//		fb.setConfigLocation(
//				new DefaultResourceLoader().getResource(configlocation));
//		// 下边两句仅仅用于*.xml文件，如果整个持久层操作不需要使用到xml文件的话（只用注解就可以搞定），则不加
//		//fb.setTypeAliasesPackage(env.getProperty("mybatis.typeAliasesPackage"));// 指定基包
//		fb.setMapperLocations(
//				new PathMatchingResourcePatternResolver().getResources(mapperlocations)
//		);
//
//		return fb.getObject();
//	}
//
//	/**
//	 * 配置事务管理器
//	 */
//	@Bean
//	public DataSourceTransactionManager transactionManager(DynamicDataSource dataSource) throws Exception {
//		return new DataSourceTransactionManager(dataSource);
//	}
//
//}